#include<stdio.h>

// #include<stdio.h>
// int main()
// {
//     // int a = 10;
//     // int b = 20;
//     // a = a+b;
//     // b = a-b;
//     // a = a-b;
// //     int n = 0;
// //     scanf("%d",&n);
// // for (int i = 0; i < n; i++)
// // {       
// //     int a =0;
// //     int count = 0;

// //         scanf("%d",&a);
// //     while(a)
// //     {
// //         if(a%2==1)
// //         {
// //         count++;
      
// //         }
// //           a/=2;
// //     }
// // printf("%d\n",count);
// // }
// int n = 0;
// scanf("%d",&n);

// // for (int i = 0; i < n; i++)
// // {
// // int a = 0;
// // scanf("%d",&a);


// //         int count =0;
// // for (int i = 0; i < 32; i++)
// // {
    
// //     if(((a>>i)&1) == 1)
// //     {
// //         count++;
// //     }
// // }
// // printf("%d\n",count);

// // }

// for (int i = 0; i < n; i++)
// {
        
//         int count = 0;
//         int a = 0;
// scanf("%d",&a);
// while(a)
// {
//     a = a&(a-1);
//     count++;

    
// }
// printf("%d\n",count);

// }



//     return 0;

// }
// #include<stdio.h>
// int main()
// {
//     //判断一个数字是否为二的次方数
//     int a = 0;
//     scanf("%d",&a);
//     if((a&(a-1))== 0 )
//     {
//         printf("yes");
//     }
//     else
//     printf("no");




//     return 0;
// }
//#include<stdio.h>

// int main()
// {
// //把 00000000 00000000 00000000 00001101（13）变为11101再变回来
// int a = 13;
// a |= (1 << 4);
// printf("%d\n",a);


// a &= ~(1<<4);
// printf("%d\n",a);


//     return 0;
// }


// int add(int x,int y)
// {
//     int c = x+y;
//     return c;
// }
// int main()
// {
//     // int a = 1;
//     // int b = 2;
//     // int c = (a>b,a = b+10,a,b = a+1);//逗号表达式
//     // printf("%d\n",c);
// // int a = 3,b = 0,c = 0,d = 0;
// // if(a = b+1,d = a/2,d>0)
// // {

// // }

// int a[10] = {1,2,3,4,5,6};
// printf("%d\n",a[5]);//[]下标引用操作符
// int c = add(a[2],a[3]);//()的操作数为add，a[2]，a[3]
// printf("hehe\n");//()为函数调用操作符

//     return 0;
// }

// struct stu
// {

// char name[20];
// int age;
// float score;


// }s4,s5;

// struct stu s3;

// int main()
// {
// struct stu s1 = {张三,20,98.888f};
// struct stu s2 = {.age = 18, .score = 99.666f, .name = "李四"};
//     return 0;
// }



struct B
{
    char c;
    int m;
};



struct stu
{

char name[20];
int age;
struct B bb;
float score;


}s4,s5;

struct stu s3;

int main()
{
struct stu s1 = {"张三",20,{'Q',88},98.888f};
struct stu s2 = {.name = "李四", .age = 18, .bb = {'q',100}, .score = 99.666f};
struct stu s3 = {.name = "李", .age = 17, .bb = {'q', 100}, .score = 99.666f};

    
    
    printf("%s\n",s1.name);//结构成员访问操作符   结构体变量名.成员名
    printf("%c\n",s1.bb.c);//结构成员访问操作符   结构体变量名.成员名
    printf("%d\n",s1.age);//结构成员访问操作符   结构体变量名.成员名
    printf("%d\n",s3.age);
    char a = 5;
    char b = 126;
    char c  =(char)a +(char)b;
    printf("%c\n",(char)c);
    //整形提升
    int i = 1;
    double j  = 2;
    double k = i+j;//算术转换
    return 0;
}